package com.firefly.admin.monitor.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.firefly.admin.common.vo.Result;
import com.firefly.admin.monitor.entity.FyMonitorJob;
import com.firefly.admin.monitor.vo.JobExecuteResult;
import com.firefly.admin.monitor.vo.MonitorJobQueryVo;
import com.firefly.admin.monitor.vo.MonitorJobStatusUpdateVo;

public interface FyMonitorJobService {
    /**
     * 分页查询定时任务接口
     *
     * @param monitorJobQueryVo 定时任务查询条件
     * @return 定时任务信息列表
     */
    Result<Page<FyMonitorJob>> getJobPage(MonitorJobQueryVo monitorJobQueryVo);

    /**
     * 获取定时任务信息接口
     *
     * @param jobId 定时任务ID
     * @return 定时任务信息
     */
    Result<FyMonitorJob> getMonitorJob(Long jobId);

    /**
     * 定时任务信息新增接口
     *
     * @param fyMonitorJob 定时任务信息
     * @return 新增结果
     */
    Result<FyMonitorJob> add(FyMonitorJob fyMonitorJob);

    /**
     * 定时任务信息编辑接口
     *
     * @param fyMonitorJob 定时任务信息
     * @return 编辑结果
     */
    Result<FyMonitorJob> update(FyMonitorJob fyMonitorJob);

    /**
     * 定时任务状态修改接口
     *
     * @param monitorJobStatusUpdateVo 定时任务状态编辑参数
     * @return 操作结果
     */
    Result<FyMonitorJob> updateStatus(MonitorJobStatusUpdateVo monitorJobStatusUpdateVo);

    /**
     * 定时任务信息删除接口
     *
     * @param jobId 定时任务ID
     * @return 删除结果
     */
    Result<String> delete(Long jobId);

    /**
     * 手动执行任务接口
     *
     * @param jobId 定时任务ID
     * @return 执行结果
     */
    Result<JobExecuteResult> handExecute(Long jobId);

    /**
     * 记录定时任务最后一次执行结果
     *
     * @param jobId             定时任务信息
     * @param lastExecuteResult 最后一次执行结果
     */
    void updateLastExecuteResult(Long jobId, String lastExecuteResult);
}
